package edu.cdnu.service;

import java.util.List;
import java.util.Map;

import edu.cdnu.pojo.HomeworkPojo;
import edu.cdnu.pojo.HomeworkStudentPojo;

/**
 * 关于课程任务的操作 的Service
 * @author ASUS AsingZ
 */
public interface HomeworkService {
	/**
	 * 通过课程id查询课程任务列表
	 * @param courseId
	 * @return
	 */
	public List<HomeworkPojo> selectHomeworkListByCourseId(int courseId);
	
	/**
	 * 新增或者修改课程任务
	 * @param homeworkPojo
	 */
	public void addOrUpdateHomework(HomeworkPojo homeworkPojo);
	
	/**
	 * 删除一个课程任务
	 * @param homeworkId
	 */
	public void deleteHomeworkByHomeworkId(int homeworkId);
	
	/**
	 * 通过 任务id,学生id查询课程任务列表
	 * 两个参数都为空就默认查询全部了
	 * @param homeworkId
	 * @param studentId
	 * @return
	 */
	public List<HomeworkStudentPojo> selectHomeworkListByHomeworkIdAndStudentId(Integer homeworkId,Integer studentId);
	
	/**
	 * 插入一个作业信息
	 * 这个只能新增面对修改又要增加接口，考虑使用{@link #insertOrUpdateHomeworkStudent}
	 * @param homeworkStudentPojo
	 */
	@Deprecated
	public void insertHomeworkStudent(HomeworkStudentPojo homeworkStudentPojo);
	
	/**
	 * 新增或者修改作业信息，任务-学生表
	 * 通过id来判断是新增还是修改
	 * @param homeworkStudentPojo
	 */
	public void insertOrUpdateHomeworkStudent(HomeworkStudentPojo homeworkStudentPojo);
	
	/**
	 * <p>根据课程任务的id来查询参与的列表</p>
	 * <p>这里返回的列表是较为详细的信息，课程任务-学生对应列表，参与学生的列表</p>
	 * @param homeworkId
	 * @return
	 */
	public Map<String,Object> selectHomeworkStudentListByHomeworkId(Integer homeworkId);
	
	/**
	 * 根据课程任务的id来查询参与的列表
	 * 包含学生信息
	 * @param homeworkId
	 * @return
	 */
	public List<Map<String,Object>> selectHomeworkStudentInfoListByHomeworkId(Integer homeworkId);
}
